home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / trueSpace 7.6 / tS761B8Std.exe / {app} / Scripts / MaterialEditor / Bricks / Compound / Phong.Brick.xml < prev    next >
Extensible Markup Language  |  2008-06-10  |  2KB  |  33 lines

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <ME_BRICK GUID="{8518587C-3FC0-4B64-8A1C-91A63B2CAABE}" Name="RtUPhong" GUIName="Phong Lighting" Description="The phong lighting model">
  3.     <ME_BRICK_INPUTPARAM GUID="{8F36D03A-7EE2-4BEE-8A11-41BD864DA005}" Name="DiffuseColor" Type="RtFloat4"/>
  4.     <ME_BRICK_INPUTPARAM GUID="{A31ADA52-5DC6-4AF0-910E-D3C48037A2E5}" Name="SpecularColor" Type="RtFloat4"/>
  5.     <ME_BRICK_INPUTPARAM GUID="{A3151AEA-B476-4A88-B79E-0AC3F07E7E9E}" Name="Shininess" Type="RtFloat"/>
  6.     <ME_BRICK_INPUTPARAM GUID="{FD26248C-C42A-4832-920E-D381CB64C584}" Name="NormalVector" Type="RtFloat3"/>
  7.     <ME_BRICK_INPUTPARAM GUID="{C15A8901-D85B-477F-B0A2-CE0B7B2F2C99}" Name="EyeDirection" Type="RtFloat3"/>
  8.     <ME_BRICK_INPUTPARAM GUID="{20899F93-8D7A-45CE-8525-FF538C66A287}" Name="LightDirection" Type="RtFloat3"/>
  9.     <ME_BRICK_INPUTPARAM GUID="{BDE177A0-2114-4358-8BAC-C202CF4C02B1}" Name="LightColor" Type="RtFloat4"/>
  10.     <ME_BRICK_OUTPUTPARAM GUID="{23D9420B-DC88-41F3-8629-E505B25B2864}" Name="ResultColor" Type="RtFloat4"/>
  11.     <ME_BRICK_CODE><![CDATA[
  12.     //The phong lighting function
  13.     void RtUPhong(in RtFloat4 DiffuseColor, in RtFloat4 SpecularColor, in RtFloat Shininess, 
  14.                   in RtFloat3 NormalVector, in RtFloat3 EyeDirection, in RtFloat3 LightDirection, 
  15.                   in RtFloat4 LightColor, out RtFloat4 ResultColor)
  16.     {
  17.         ResultColor = RtFloat4(0.0f, 0.0f, 0.0f, 0.0f);
  18.         RtFloat3 vNormal = NormalVector;
  19.         RtFloat3 vLightDir = LightDirection;
  20.         RtFloat3 vEye = EyeDirection;
  21.         RtFloat DiffuseCoef = rtx_Dot(vNormal, vLightDir);
  22.         if (DiffuseCoef>0)
  23.         {
  24.             RtFloat3 vLightReflect = rtx_Reflect(rtx_Negate(vLightDir), vNormal);
  25.             RtFloat EyeDotReflect = rtx_Saturate(rtx_Dot(vEye, vLightReflect));
  26.             RtFloat SpecularCoef = rtx_Pow(EyeDotReflect, Shininess);
  27.             ResultColor = (DiffuseColor * DiffuseCoef + SpecularColor * SpecularCoef) * LightColor;
  28.         }
  29.         ResultColor.a = DiffuseColor.a;
  30.     }
  31.     ]]></ME_BRICK_CODE>
  32. </ME_BRICK>
  33.